User interfaces (UIs), such as graphical user interfaces (GUIs), are widely-used and critical components of modern software applications, particularly for cloud-based applications. For example, a GUI often acts as a client that interfaces with a remote application server executing application code, while the application server interfaces with a database to store, access, or manipulate application data.
There are many different approaches for designing and implementing GUIs. In general, these approaches consider various aspects, including visual elements and aesthetic design, as well as functional aspects of how the GUI interacts with both the user and the back-end (server/database). There are a large number of well-known types of GUI components, such as a text box, a drop-down selection menu, a slider bar to select between a range of values, or a pop-up window, to name a few examples.
Many of these components have been standardized to some extent, and large libraries of components exist for the purpose of facilitating the efforts of GUI developers as they develop new or modified GUIs. In theory, GUI developers may select from these libraries of components, and create customized GUIs.
In practice, however, it may be problematic to combine desired components in the context of a desired GUI. Further, it may be problematic to connect desired components in the context of a specific application associated with the GUI, e.g., to define a manner in which each component communicates with the back-end.
Even if successful in addressing the just-referenced problems, the solutions of a particular GUI developer are often non-standard, and/or difficult to communicate to future developers. As a result, it may be difficult to maintain or upgrade GUIs in an efficient manner.